package com.example.demo.annotation;

import java.lang.annotation.*;

/**
 * 角色验证注解
 * 用于控制器方法或类上，指定访问所需的角色
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequiresRole {
    
    /**
     * 所需角色码
     * @return 角色码数组
     */
    String[] value();
    
    /**
     * 角色逻辑关系
     * @return 逻辑关系，默认为AND（需要所有角色）
     */
    Logical logical() default Logical.AND;
    
    /**
     * 角色逻辑枚举
     */
    enum Logical {
        AND, // 需要所有角色
        OR   // 需要任一角色
    }
}
